//-----------------------------------------------------------------------
// <copyright file="PresenceExtensionCollection.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>
//-----------------------------------------------------------------------

namespace Microsoft.Live.Messenger.Presence
{
    using System;
    using System.Collections;

    using Microsoft.Live.Core;
    using Microsoft.Live.Messenger;

    /// <summary>
    /// Represents a collection of presence extensions.
    /// </summary>
    public sealed class PresenceExtensionCollection : Collection
    {
        internal PresenceExtensionCollection(object obj, User user)
            : base(obj, user)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Gets the <c>PresenceExtension</c> by name.
        /// </summary>
        /// <param name="name">The name of the <c>PresenceExtension</c>.</param>
        /// <returns>The <c>PresenceExtension</c> if it exists, otherwise <c>null</c>.</returns>
        public PresenceExtension this[string name]
        {
            get
            {
                return null;
            }
        }

        /// <summary>
        ///     Adds a new custom property.
        /// </summary>
        /// <param name="property">The property to add</param>
        /// <remarks>
        ///     New properties can only be added for the local endpoint of the User. Additionally, a 
        ///     <see cref="PresenceExtensionFactory"/> object must be assigned to <see cref="User.PresenceFactory"/>.
        ///     An exception will be thrown when trying to set properties for buddies, or if 
        ///     <see cref="User.PresenceFactory"/> is null.
        /// </remarks>
        public void Add(PresenceExtension property)
        {
        }

        /// <summary>
        ///     Removes a custom property.
        /// </summary>
        /// <param name="property">The property to remove</param>
        /// <remarks>
        ///     Properties can only be remove for the local endpoint of the User. Additionally, a 
        ///     <see cref="PresenceExtensionFactory"/> object must be assigned to <see cref="User.PresenceFactory"/>.
        ///     An exception will be thrown when trying to remove properties for buddies, or if 
        ///     <see cref="User.PresenceFactory"/> is null.
        /// </remarks>
        public void Remove(PresenceExtension property)
        {
        }

        internal override object FindOrCreate(MessengerEntity entity)
        {
            throw new NotImplementedException();
        }
    }
}